import nunjucks from "nunjucks";
import { GetFilePath } from "./getPath.js";
import { ConfigNunjucks } from "../config/setting.js";

// 在应用程序启动时配置 Nunjucks
let fi = GetFilePath(ConfigNunjucks)
const fii = fi.pathname;
console.log(`nunjucksEnv: ${GetFilePath(ConfigNunjucks)}`);

const nunjucksEnv = nunjucks.configure(fii, {
  noCache: process.env.NODE_ENV !== 'production', // 根据环境变量设置缓存
  watch: process.env.NODE_ENV !== 'production' // 根据环境变量设置监视
});


// 渲染中间件工厂
function getRender() {
  return async (ctx, next) => {
    // 定义一个渲染方法，附加到 ctx 上
    ctx.render = async (templateName, context) => {
      try {
        // 渲染模板并设置响应体
        ctx.body = await new Promise((resolve, reject) => {
          nunjucksEnv.render(templateName, context, (err, res) => {
            if (err) {
              reject(err);
            } else {
              resolve(res);
            }
          });
        });
      } catch (error) {
        // 处理渲染错误
        ctx.status = 500;
        ctx.body = 'Internal Server Error';
        console.error('Error rendering template:', error);
      }
    };

    // 继续处理下一个中间件
    await next();
  };
}

export const GetRender = getRender; 